Python—正则表达式
单字符匹配
字符 | 匹配规则 | 示例 |
. | 匹配任意一个字符(除了换行:\n) | re.match("...", "ab") |
[] | 匹配[ ]中的任意一个字符 | re.match("1[34578]","18") |
\d | 匹配任意一个数字字符,即0-9。\d = [0-9] | re.match("\d", "2") |
\D | 匹配任意一个非数字字符。\D = [^0-9] | re.match("\D", "a") |
\s | 匹配任意一个空白字符,相当于 [ \t\n\r\f\v] | re.match("\s", "\ta") |
\S | 匹配任意一个非空白字符,相当于 [^ \t\n\r\f\v] | re.match("\S", "\na") |
\w | 匹配数字、字母、下划线中的任意一个字符,相当于 [a-zA-Z0-9_] | re.match("\w", "_a") |
\W | 匹配非数字、字母、下划线中的任意一个字符,相当于 [^a-zA-Z0-9_] | re.match("\W", "1a") |
多字符匹配(匹配多个字符的相关格式:表示数量)
字符 | 匹配规则 | 示例 |
* | 匹配前一个元字符出现0次或者多次,即可以有0次。 | re.match("\d*", "123") |
+ | 匹配前一个元字符出现1次或者多次,即至少有1次。 | re.match("\d+", "123") |
? | 匹配前一个元字符出现1次或者0次,即要么有1次,要么没有。 | re.match("\d?", "1234abc") |
{m} | 匹配前一个元字符出现 m 次。 | re.match("\d{3}[a-z]", "1234abc") |
{m,} | 匹配前一个元字符至少出现 m 次。 | re.match("\d{3,}[a-z]", "1234abc") |
{m,n} | 匹配前一个元字符出现m次到n次。 | re.match("\d{3,5}[a-z]", "1234abc") |
表示边界
字符 | 匹配规则 | 示例 |
^ | 匹配目标字符串的开始位置,多行模式下匹配每一行的开始 | |
$ | 匹配目标字符串的结束位置,多行模式下匹配每一行的结束 | |
\b | 匹配一个单词的边界。单词边界:数字字母下划线和其它字符的交界位置为单词的边界 | 示例如下 |
\B | 匹配非单词的边界。就是看单词两边是不是数字字母下划线。若是,即为非单词边界 | 示例如下 |
\A | 匹配字符串开始位置(^),忽略多行模式 | |
\Z | 匹配字符串结束位置($),忽略多行模式 |
import re list = re.findall(r"\bis\b", "this is a test") print list # ['is'] is 左右两边都不是数字字母下划线的只有一个,即第二个is匹配成功(左右两边都是空格)。 list = re.findall(r"\bis\b", "this_is a test") print list # [] is 左右两边都不是数字字母下划线的没有一个。
原始字符串
str = "\nabc" print str # abc str = "\\nabc" print str # \nabc str = r"\nabc" print str # \nabc
import re str = "\\nabc" print str # \nabc str = r"\nabc" print str # \nabc res = re.match("\\\\nabc", str) print res.group(0) # \nabc res = re.match(r"\\nabc", str) print res.group(0) # \nabc # str = "\\nabc" = r"\nabc"
https://blog.csdn.net/weixin_40907382/article/details/79654372